home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / SWAG / SWAGA_C / COMM.SWG / 0077_Simple Fossil Comm Unit.pas < prev    next >
Pascal/Delphi Source File  |  1995-05-26  |  3KB  |  138 lines

  1. {
  2. > Does anyone have any units that will allow me to use a fossil in my
  3. > programs?  If so, are these units preset for printing to the screen and
  4. > the modem?  I would VERY much apprecieate any help.
  5.  
  6. Here  is  a  copy of my very own fossil interface, I made them because I
  7. couldn't find simple/good enough code out  there.  I like 'em because of
  8. their simplicity.  Only the basic commands are here, if you want to  add
  9. more  then download X00 (or the fido specs) for a chart of the functions
  10. and add your own.
  11. }
  12.  
  13. Unit FComm;
  14. interface
  15.  
  16. function  Comm_Init(port:byte):boolean;{Inits the port for communications,
  17. returns true if successfull}procedure Comm_DeInit;{DeInits the port}
  18.  
  19. procedure Comm_Baud(baud:word);{Sets the speed of the port (not needed), always
  20. uses 8N1}procedure Comm_DTR(DTR_Up:boolean);{raises/lowers DTR}
  21. function  Comm_Carrier:boolean;{TRUE if Carrier detected}
  22.  
  23. procedure Comm_Tx(sendbyte:byte);{Send a byte to port}
  24. function  Comm_Rx_Ready:boolean;{TRUE if char waiting in buffer}
  25. function  Comm_Rx:byte;{Get a byte from port}
  26.  
  27.  
  28. implementation
  29.  
  30. var Comm_Port:word;{Port to use, in FOSSIL format. ie. COM1=0}
  31.     StatBit:Word;{Status Bit}
  32.  
  33.  
  34. function Comm_Init(port:byte):boolean;
  35. var t:word;
  36. begin
  37.      Comm_Port:=port-1;
  38.      asm
  39.         mov ah, 4h
  40.         mov dx, Comm_Port
  41.         int 14h
  42.         mov t, ax
  43.      end;
  44.      Comm_Init:=t=$1954
  45. end;
  46.  
  47. procedure Comm_DeInit;
  48. begin
  49.      asm
  50.         mov ah, 5h
  51.         mov dx, Comm_Port
  52.         int 14h
  53.      end;
  54. end;
  55.  
  56. procedure Comm_Baud(baud:word);
  57. var Newbaud:byte;
  58. begin
  59.      Case Baud div 10 of        {finds the bit value version of the baud}
  60.           30:  Newbaud:=$43;
  61.           60:  Newbaud:=$63;
  62.           120: Newbaud:=$83;
  63.           240: Newbaud:=$A3;
  64.           480: Newbaud:=$C3;
  65.           960: Newbaud:=$E3;
  66.           1920:Newbaud:=$03;
  67.           3840:Newbaud:=$23;
  68.    end;
  69.      asm
  70.         mov ah, 0h
  71.         mov al, Newbaud
  72.         mov dx, Comm_Port
  73.         int 14h
  74.      end;
  75. end;
  76.  
  77. procedure Comm_DTR(DTR_Up:boolean);
  78. var DTRBit:byte;
  79. begin
  80.      If DTR_Up
  81.         then DTRBit:=1
  82.         else DTRBit:=0;
  83.      asm
  84.         mov ah, 6h
  85.         mov al, DTRBit
  86.         mov dx, Comm_Port
  87.         int 14h
  88.      end;
  89. end;
  90.  
  91. function Comm_Carrier:boolean;
  92. begin
  93.      asm
  94.         mov ah, 3h
  95.         mov dx, Comm_Port
  96.         int 14h
  97.         mov StatBit, ax
  98.      end;
  99.      Comm_Carrier:=(StatBit and 128) <> 0;      {Bit 7=CD Signal}
  100. end;
  101.  
  102. procedure Comm_Tx(sendbyte:byte);
  103. begin
  104.      asm
  105.         mov ah, 1h
  106.         mov al, SendByte
  107.         mov dx, Comm_Port
  108.         int 14h
  109.      end;
  110. end;
  111.  
  112. function  Comm_Rx_Ready:boolean;
  113. begin
  114.      asm
  115.         mov ah, 3h
  116.         mov dx, Comm_Port
  117.         int 14h
  118.         mov StatBit, ax
  119.      end;
  120.      Comm_Rx_Ready:=(StatBit and $100) <> 0;{Bit 0 of AH!}
  121. end;
  122.  
  123. function  Comm_Rx:byte;
  124. var temp:byte;
  125. begin
  126.      asm
  127.         mov ah, 2h
  128.         mov dx, Comm_Port
  129.         int 14h
  130.         mov temp, al
  131.      end;
  132.      Comm_Rx:=temp;
  133. end;
  134.  
  135.  
  136. end .{Unit}
  137.  
  138.